from .CountModel import CountModel


class VariableCache:
    """
    用于缓存临时变量的类，使用 CountModel 进行高精度计数，
    支持缓存上次计算结果为 ans 并在后续计算中调用。
    """

    def __init__(self):
        """
        初始化 VariableCache 类的实例，设置初始缓存为空字典。
        """
        self.cache = {}

    def set_variable(self, var_name, value):
        """
        设置缓存变量的值，将值转换为 CountModel 实例。

        参数:
        var_name (str): 变量名，例如 'ans'。
        value: 要缓存的值。
        """
        if not isinstance(value, CountModel):
            value = CountModel(value)
        self.cache[var_name] = value

    def get_variable(self, var_name):
        """
        获取缓存变量的值。

        参数:
        var_name (str): 变量名，例如 'ans'。

        返回:
        CountModel 实例，如果变量不存在则返回 None。
        """
        return self.cache.get(var_name)

    def clear_cache(self):
        """
        清空缓存中的所有变量。
        """
        self.cache.clear()
